1. 前端渲染和后端渲染

前端渲染,浏览器获取到的是一个不完整的页面,通过js,动态渲染页面. 也就是动态渲染过程在浏览器端执行

后端渲染, 浏览器获取到的是一个完整的页面. 动态渲染的过程,是在服务器端执行的 

前端渲染的优点: 减轻服务器压力
前端渲染的缺点: 不利于SEO


2. 后端渲染(使用ejs模板引擎)
2.0 下载ejs npm i ejs
2.1 将我们需要动态渲染的html页面改成.ejs 
2.2 把.ejs模板单独放到一个文件夹中
2.3 在server.js中进行配置
    app.set('view engine', '要使用模板引擎的包名') 告诉express.要使用哪个模板引擎
    app.set('views', '存放模板的路径') // 告诉express. 模板存放在哪里
2.4. 使用模板引擎,动态渲染模板,然后响应浏览器
    响应对象.render('模板的名称', 数据) 注意: 一般数据就是一个对象
2.5 修改模板
    在ejs模板中. <%%>是ejs可以解析的语法. 这个语法中可以直接写js代码. 当模板解析的时候,<%%>里面的代码可以运行,但是运行的结果不会渲染到模板中. 如果需要将运行的结果渲染到模板中,应该写 <%= js代码 %>
    注意: 如果需要渲染传入模板的数据, <%= 传入对象的某个属性 %>

3. 路由器中间件
    const router = express.Router() 
    router就是一个路由器中间件
    主要用来配置后端路由
    router.get/post('/路径',(req,res)=>{})
    使用路由器中间件: 
    app.use(router)
    注意: 使用路由器中间件的代码,必须写在其他中间件的后面


4.利用cookie实现登录保持

 http协议是无状态的,每次给服务器发请求,服务器并不知道是哪个用户请求的

 cookie是浏览器端存储数据的一种方式. 
 使用cookie的流程: 
    1. 浏览器给服务器发送请求进行登录
    2. 服务器接收到请求,进行登录校验
    3. 校验成功则将某段数据,添加到响应头中,响应给浏览器
        代码: res.cookie('键','值') 
        响应头信息: set-cookie: 值
    4. 浏览器接收到响应之后,根据响应头的set-cookie.将数据,存储到cookie中
    5. 浏览器再次给指定的服务器发送请求,会自动将cookie中的数据添加到请求头中上传给服务器,然后服务器进行校验


